package br.com.ppc.modelo;// default package
// Generated 06/07/2011 14:08:13 by Hibernate Tools 3.4.0.CR1

import java.util.Date;
import java.util.HashSet;
import java.util.Set;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import static javax.persistence.GenerationType.IDENTITY;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

/**
 * Especime generated by hbm2java
 */
@Entity
@Table(name = "especime", catalog = "ppc")
public class Especime implements java.io.Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = 8024308203401715060L;
	private Integer id;
	private Autor autor;
	private Grupo grupo;
	private Multimidia multimidia;
	private Geografia geografia;
	private Coleta coleta;
	private String nome;
	private Date dataInc;
	private String imprecisao;
	private String tipoMaterial;
	private String aplicacao;
	private String observacao;
	private Set<Determinador> determinadors = new HashSet<Determinador>(0);

	public Especime() {
	}

	public Especime(Autor autor, Grupo grupo, Coleta coleta, String nome,
			Date dataInc, String imprecisao, String tipoMaterial,
			String aplicacao, String observacao) {
		this.autor = autor;
		this.grupo = grupo;
		this.coleta = coleta;
		this.nome = nome;
		this.dataInc = dataInc;
		this.imprecisao = imprecisao;
		this.tipoMaterial = tipoMaterial;
		this.aplicacao = aplicacao;
		this.observacao = observacao;
	}

	public Especime(Autor autor, Grupo grupo, Multimidia multimidia,
			Geografia geografia, Coleta coleta, String nome, Date dataInc,
			String imprecisao, String tipoMaterial, String aplicacao,
			String observacao, Set<Determinador> determinadors) {
		this.autor = autor;
		this.grupo = grupo;
		this.multimidia = multimidia;
		this.geografia = geografia;
		this.coleta = coleta;
		this.nome = nome;
		this.dataInc = dataInc;
		this.imprecisao = imprecisao;
		this.tipoMaterial = tipoMaterial;
		this.aplicacao = aplicacao;
		this.observacao = observacao;
		this.determinadors = determinadors;
	}

	@Id
	@GeneratedValue(strategy = IDENTITY)
	@Column(name = "id", unique = true, nullable = false)
	public Integer getId() {
		return this.id;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "idAutor", nullable = false)
	public Autor getAutor() {
		return this.autor;
	}

	public void setAutor(Autor autor) {
		this.autor = autor;
	}

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "idGrupo", nullable = false)
	public Grupo getGrupo() {
		return this.grupo;
	}

	public void setGrupo(Grupo grupo) {
		this.grupo = grupo;
	}

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "idMultimidia")
	public Multimidia getMultimidia() {
		return this.multimidia;
	}

	public void setMultimidia(Multimidia multimidia) {
		this.multimidia = multimidia;
	}

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "idGeografia")
	public Geografia getGeografia() {
		return this.geografia;
	}

	public void setGeografia(Geografia geografia) {
		this.geografia = geografia;
	}

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "idColeta", nullable = false)
	public Coleta getColeta() {
		return this.coleta;
	}

	public void setColeta(Coleta coleta) {
		this.coleta = coleta;
	}

	@Column(name = "nome", nullable = false, length = 50)
	public String getNome() {
		return this.nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	@Temporal(TemporalType.DATE)
	@Column(name = "dataInc", nullable = false, length = 10)
	public Date getDataInc() {
		return this.dataInc;
	}

	public void setDataInc(Date dataInc) {
		this.dataInc = dataInc;
	}

	@Column(name = "imprecisao", nullable = false, length = 50)
	public String getImprecisao() {
		return this.imprecisao;
	}

	public void setImprecisao(String imprecisao) {
		this.imprecisao = imprecisao;
	}

	@Column(name = "tipoMaterial", nullable = false, length = 50)
	public String getTipoMaterial() {
		return this.tipoMaterial;
	}

	public void setTipoMaterial(String tipoMaterial) {
		this.tipoMaterial = tipoMaterial;
	}

	@Column(name = "aplicacao", nullable = false, length = 50)
	public String getAplicacao() {
		return this.aplicacao;
	}

	public void setAplicacao(String aplicacao) {
		this.aplicacao = aplicacao;
	}

	@Column(name = "observacao", nullable = false, length = 50)
	public String getObservacao() {
		return this.observacao;
	}

	public void setObservacao(String observacao) {
		this.observacao = observacao;
	}

	@OneToMany(fetch = FetchType.LAZY, mappedBy = "especime")
	public Set<Determinador> getDeterminadors() {
		return this.determinadors;
	}

	public void setDeterminadors(Set<Determinador> determinadors) {
		this.determinadors = determinadors;
	}

}
